Understanding Middleware Pipeline in ASP.NET Core
ASP.NET Core में मिडिलवेयर पाइपलाइन को समझना
इस लेख में, हम ASP.NET Core के भीतर उपयोग किए जाने वाले मिडिलवेयर पाइपलाइन के बारे में जानेंगे। मिडिलवेयर पाइपलाइन एप्लीकेशन के कॉन्फ़िगरेशन का एक बहुत ही महत्वपूर्ण घटक है और यह एप्लीकेशन के व्यवहार को निर्धारित करता है।
जब ASP.NET Core किसी रिक्वेस्ट को प्राप्त करता है, तो उस रिक्वेस्ट को प्रोसेस करने की जिम्मेदारी मिडिलवेयर कंपोनेंट की होती है। मिडिलवेयर कंपोनेंट रिक्वेस्ट को प्रोसेस करके या तो अगली मिडिलवेयर को रिक्वेस्ट भेज देता है, या फिर रिक्वेस्ट को प्रोसेस करके एक रिस्पॉन्स जनरेट करता है जिसे रिक्वेस्ट भेजने वाले के पास भेज दिया जाता है।
मिडिलवेयर की कार्यप्रणाली
एप्लीकेशन की कार्यप्रणाली को समझने के लिए मिडिलवेयर की कार्यप्रणाली को समझना अति आवश्यक है। एक या एक से अधिक मिडिलवेयर को एक श्रृंखला में व्यवस्थित करके एप्लीकेशन के भीतर मिडिलवेयर पाइपलाइन का निर्माण किया जाता है।
प्रत्येक मिडिलवेयर एक निश्चित क्रियाकलाप को निष्पादित करता है। मिडिलवेयर को एक निश्चित क्रम(order) में रखकर, क्रियाकलापों के समूह को वांछनीय तरीके से संपादित किया जाता है।
इस लेख में हम पूर्व-निर्मित (built-in) मिडिलवेयर की चर्चा करेंगे।
क्रॉस-कटिंग कंसर्न और मिडिलवेयर
मिडिलवेयर का निर्माण एप्लीकेशन के क्रॉस-कटिंग कंसर्न को ध्यान में रखते हुए किया जाता है। क्रॉस-कटिंग कंसर्न का अभिप्राय यह है कि पूरे एप्लीकेशन के भीतर कहीं भी किसी क्रियाकलाप को संपादित करने के लिए मिडिलवेयर का प्रयोग किया जा सकता है।
उदाहरण के लिए, एप्लीकेशन के भीतर अनेक जगहों पर लॉगिन की सुविधा को जोड़ना होता है। इसके लिए हम लॉगिन से संबंधित मिडिलवेयर का निर्माण करके इस लक्ष्य को पूरा कर सकते हैं। हम जानते हैं कि एप्लीकेशन के भीतर कभी भी किसी भी प्रकार की त्रुटि उत्पन्न हो सकती है। इस त्रुटि को हैंडल करने के लिए हम मिडिलवेयर का उपयोग कर सकते हैं।
कहने का अभिप्राय है कि एप्लीकेशन के भीतर जितने भी अलग-अलग प्रकार के क्रॉस-कटिंग कंसर्न से संबंधित मुद्दे हैं, उन सबका समाधान मिडिलवेयर के निर्माण और उपयोग के द्वारा किया जा सकता है।
सबसे बड़ी बात यह है कि जितने भी महत्वपूर्ण क्रॉस-कटिंग कंसर्न से संबंधित मिडिलवेयर की जरूरत है, वे पहले से ही माइक्रोसॉफ्ट के द्वारा बनाए जा चुके हैं। डेवलपर का कर्तव्य केवल उन मिडिलवेयर का उपयोग अपने एप्लीकेशन के भीतर करना होता है। इसी बात को ध्यान में रखते हुए, इस लेख के भीतर मुख्य रूप से पूर्व-निर्मित मिडिलवेयर पर विचार किया जाएगा।
अलग-अलग प्रकार के पूर्व-निर्मित मिडिलवेयर को जानकर हम अपने एप्लीकेशन के व्यवहार को बेहतर तरीके से नियंत्रित कर सकते हैं। आइए, कुछ पहले से बने हुए मिडिलवेयर पर विचार करते हैं।
मिडिलवेयर क्या है: एक पुनरावलोकन
आगे बढ़ने से पहले, हम मिडिलवेयर क्या है, इसको एक बार फिर से समझ लेते हैं। ASP.NET Core के संदर्भ में, मिडिलवेयर एक क्लास होता है, जिसके भीतर HTTP रिक्वेस्ट और रिस्पॉन्स को हैंडल करने से संबंधित कार्यक्षमता (functionality) को बनाया गया होता है।
माइक्रोसॉफ्ट के द्वारा पहले से बनाया गया एक RequestDelegate नाम का डेलीगेट उपलब्ध कराया गया है। इस डेलीगेट को मिडिलवेयर के भीतर कंस्ट्रक्टर इंजेक्शन के माध्यम से इंजेक्ट किया जाता है। इस डेलीगेट का उपयोग प्रोसेस करने के बाद HttpContext ऑब्जेक्ट को अगले मिडिलवेयर को पास करने के लिए किया जाता है।
मिडिलवेयर क्लास के बारे में निम्नलिखित बातें मुख्य रूप से जानने योग्य हैं:
- मिडिलवेयर के कंस्ट्रक्टर के द्वारा RequestDelegate ऑब्जेक्ट को इनिशियलाइज़ किया जाता है।
- मिडिलवेयर के भीतर आमतौर पर Invoke नाम का एक मेथड होता है। इसके भीतर आमतौर पर मिडिलवेयर की प्रोसेसिंग लॉजिक को दिया जाता है और अगले मिडिलवेयर को HttpContext ऑब्जेक्ट पास करने के लिए RequestDelegate ऑब्जेक्ट को इन्वोक किया जाता है।
अब हम मिडिलवेयर के मुख्य उद्देश्य पर विचार करते हैं: मिडिलवेयर रिक्वेस्ट को प्रोसेस करके रिस्पॉन्स उत्पन्न करता है।
पूर्व-निर्मित एक्सेप्शन हैंडलिंग मिडिलवेयर
सबसे पहले, हम एक्सेप्शन हैंडलिंग से संबंधित पूर्व-निर्मित मिडिलवेयर पर विचार करते हैं। इसके अंतर्गत कई प्रकार के बिल्ट-इन मिडिलवेयर उपलब्ध हैं:
- DeveloperExceptionPageMiddleware
- ExceptionHandlerMiddleware
- StatusCodePagesMiddleware
- MvcMiddleware
प्रत्येक मिडिलवेयर HTTP रिक्वेस्ट को हैंडल करता है, लेकिन उसका उद्देश्य अलग-अलग हो सकता है। उदाहरण के लिए, DeveloperExceptionPageMiddleware डेवलपमेंट के दौरान किसी प्रकार के एक्सेप्शन के उत्पन्न होने पर व्यापक रूप से एक्सेप्शन के बारे में जानकारी उपलब्ध कराता है। यह जानकारी डेवलपर को एक्सेप्शन को हैंडल करने में मदद करता है। इस मिडिलवेयर का उपयोग केवल डेवलपमेंट के दौरान करना चाहिए, क्योंकि यदि इस मिडिलवेयर का उपयोग प्रोडक्शन के भीतर किया जाए तो ऐसी जानकारी लीक हो सकती है, जिसके कारण एप्लीकेशन को हैक करना संभव होगा। DeveloperExceptionPageMiddleware का प्रयोग इसीलिए केवल डेवलपमेंट के दौरान ही करना चाहिए।
ExceptionHandlerMiddleware का प्रयोग भी एक्सेप्शन को हैंडल करने के लिए किया जाता है, लेकिन इस मिडिलवेयर का उपयोग आमतौर पर प्रोडक्शन फेज में किया जाता है। जब एप्लीकेशन में किसी प्रकार की त्रुटि होती है, तो अंतिम यूजर को एक्सेप्शन के बारे में संक्षिप्त जानकारी देने के लिए इस मिडिलवेयर का उपयोग किया जाता है।
StatusCodePagesMiddleware का उपयोग आमतौर पर "एरर पेजेस के भीतर" या "स्टेटस कोड प्रदर्शित करने के लिए" किया जाता है। यह एक्सेप्शन से संबंधित स्टेटस कोड और संक्षिप्त जानकारी उपलब्ध कराता है।
MvcMiddleware का उपयोग MVC एप्लीकेशन के भीतर HTML पेज को जनरेट करने के लिए किया जाता है। यह मिडिलवेयर रेज़र पेज को प्रोसेस करके HTML पेज में रूपांतरित करता है और अंतिम यूजर को भेज देता है।
HttpContext ऑब्जेक्ट और मिडिलवेयर पाइपलाइन
प्रत्येक मिडिलवेयर HttpContext ऑब्जेक्ट को प्राप्त करता है। HttpContext ऑब्जेक्ट का निर्माण सर्वर के द्वारा किया जाता है। HttpContext ऑब्जेक्ट एक प्रकार का ब्लैक बॉक्स होता है, जिसके भीतर रिक्वेस्ट से संबंधित सभी प्रकार की आवश्यक जानकारी होती है। इसके अलावा, वेब सर्वर के द्वारा कुछ आवश्यक कॉन्फ़िगरेशन जानकारी को भी शामिल करके HttpContext ऑब्जेक्ट के भीतर रख दिया जाता है। इस HttpContext ऑब्जेक्ट को वेब सर्वर के द्वारा रिक्वेस्ट को प्रोसेस करने के उद्देश्य से एप्लीकेशन के पास भेज दिया जाता है।
एप्लीकेशन के सबसे शुरुआती चरण में मिडिलवेयर पाइपलाइन होता है। प्रत्येक मिडिलवेयर इस HttpContext ऑब्जेक्ट को प्रोसेस करता है और अगले मिडिलवेयर के पास भेज देता है। मिडिलवेयर पाइपलाइन के भीतर अलग-अलग मिडिलवेयर की व्यवस्था एक निश्चित क्रम और तर्कपूर्ण तरीके से की गई होती है।
उदाहरण के लिए, मिडिलवेयर पाइपलाइन के भीतर लॉगिंग मिडिलवेयर, ऑथेंटिकेशन मिडिलवेयर, ऑथराइजेशन मिडिलवेयर, स्टैटिक फाइल हैंडल करने के लिए मिडिलवेयर इत्यादि होते हैं। इन सभी मिडिलवेयर का उपयोग एप्लीकेशन की आवश्यकता के अनुसार करना चाहिए।
उदाहरण के लिए, स्टैटिक फाइल मिडिलवेयर का उपयोग तब करना चाहिए जब एप्लीकेशन को किसी स्टैटिक फाइल जैसे HTML, CSS, PDF इत्यादि को प्रोसेस करने की आवश्यकता हो।
मिडिलवेयर ASP.NET Core के निर्माण का एक महत्वपूर्ण हिस्सा है।
मिडिलवेयर पाइपलाइन का उदाहरण
जब कई सारे मिडिलवेयर को एक निश्चित क्रम और तर्कपूर्ण तरीके से एप्लीकेशन के भीतर अरेंज किया जाता है, तो उसे मिडिलवेयर पाइपलाइन के रूप में जाना जाता है। आइए, हम मिडिलवेयर पाइपलाइन के बारे में कुछ उदाहरणों द्वारा विचार करते हैं।
मान लीजिए आप एक साधारण सा एप्लीकेशन बना रहे हैं। जब एप्लीकेशन आरंभ होता है, तो यह अंतिम यूजर को एक स्वागत पेज का प्रदर्शन करता है। इसका अर्थ यह है कि जब कोई भी यूजर एप्लीकेशन के पास रिक्वेस्ट भेजता है, तो सबसे पहले उसे एक वेलकम पेज का दर्शन होता है। वेलकम पेज को दिखाने के लिए हम मिडिलवेयर का उपयोग कर सकते हैं। मिडिलवेयर का निर्माण आप खुद भी कर सकते हैं, लेकिन आमतौर पर माइक्रोसॉफ्ट के द्वारा वेलकम पेज को दिखाने के लिए एक बना बनाया मिडिलवेयर प्रदान किया गया है, जिसको आप अपनी एप्लीकेशन में जोड़कर इस कार्य को संपन्न कर सकते हैं।
किसी भी पूर्व-निर्मित मिडिलवेयर को एप्लीकेशन के भीतर प्रयोग करने के लिए, आपको उससे संबंधित पैकेज को NuGet या GitHub से डाउनलोड करके अपनी एप्लीकेशन में इंस्टॉल करना होता है। उदाहरण के लिए, वेलकम पेज से संबंधित मिडिलवेयर WelcomePageMiddleware का उपयोग करने के लिए आप निम्नलिखित पैकेज का उपयोग करेंगे:
Microsoft.AspNetCore.Diagnostic NuGet package
आमतौर पर यह पैकेज आपके Microsoft.AspNetCore.All मेटा पैकेज के साथ पहले से ही उपलब्ध होता है, अतः आपको अलग से पैकेज को डाउनलोड करने की आवश्यकता नहीं पड़ती है।
पूर्व-निर्मित मिडिलवेयर का उपयोग
किसी पूर्व-निर्मित मिडिलवेयर का उपयोग एप्लीकेशन के भीतर करने के लिए IApplicationBuilder ऑब्जेक्ट के एक्सटेंशन मेथड का उपयोग किया जाता है। उदाहरण के लिए, वेलकम पेज मिडिलवेयर का उपयोग एप्लीकेशन के भीतर करने के लिए आप IApplicationBuilder ऑब्जेक्ट के एक्सटेंशन मेथड का उपयोग निम्न प्रकार से करेंगे:
app.UseWelcomePage();
जैसा कि हम जानते हैं कि मिडिलवेयर एक क्लास होता है। यदि T एक मिडिलवेयर क्लास है, तो इस क्लास को मिडिलवेयर के रूप में रजिस्टर करने के लिए निम्नलिखित मेथड का प्रयोग करते हैं:
UseMiddleware<T>();
जब एप्लीकेशन के पाइपलाइन के भीतर app.UseWelcomePage(); मेथड को कॉल किया जाता है, तो यह मेथड उससे संबंधित मिडिलवेयर WelcomePageMiddleware ऑब्जेक्ट को निर्मित करता है और उसके व्यवहार के अनुसार डेलीगेट को इन्वोक करता है। WelcomePageMiddleware का डेलीगेट एक वेलकम पेज को निर्मित करके एप्लीकेशन की ओर से रिस्पॉन्स के रूप में क्लाइंट के पास भेज देता है।
स्टैटिक फाइल मिडिलवेयर और MVC एप्लीकेशन कॉन्फ़िगरेशन
पिछले लेख में हमने देखा कि किस प्रकार वेलकम पेज मिडिलवेयर का उपयोग करके एप्लीकेशन के भीतर एक वेलकम पेज का निर्माण किया जा सकता है। जब भी एप्लीकेशन आरंभ होगा, यूजर को एक वेलकम पेज का दर्शन होता है, लेकिन यह एप्लीकेशन कुछ ज्यादा नहीं करता। अब हम एक ऐसे एप्लीकेशन का निर्माण करेंगे जो विभिन्न प्रकार के डायनेमिक कंटेंट, उदाहरण के लिए विभिन्न प्रकार के स्टैटिक फाइलें जैसे इमेज, जावास्क्रिप्ट और CSS स्टाइल शीट्स को पेज पर प्रदर्शित कर सकता है। इस एप्लीकेशन का नाम हम स्टैटिक फाइल एप्लीकेशन रख सकते हैं। आइए, इस एप्लीकेशन का निर्माण करके स्टैटिक फाइल मिडिलवेयर के बारे में समझते हैं।
ASP.NET Core के भीतर, wwwroot फोल्डर के भीतर डिफ़ॉल्ट रूप से स्टैटिक फाइलें रखी जाती हैं। इसका अर्थ यह है कि जब किसी स्टैटिक फाइल का रिक्वेस्ट एप्लीकेशन से किया जाता है, तो एप्लीकेशन इस wwwroot फोल्डर से स्टैटिक फाइल को खोजकर क्लाइंट को रिस्पॉन्स के रूप में भेज देता है। ध्यान दीजिए कि किसी अन्य फोल्डर से स्टैटिक फाइल को बाय डिफ़ॉल्ट एप्लीकेशन खोजकर रिटर्न नहीं करता है। ऐसा इसलिए किया गया है ताकि एप्लीकेशन की सुरक्षा बनी रहे। अगर आप चाहते हैं कि किसी दूसरे फोल्डर से स्टैटिक फाइल को सर्व किया जाए, तो इसके लिए आपको अपने एप्लीकेशन के कॉन्फ़िगरेशन में परिवर्तन करना होगा। यह विषय हमारे वर्तमान में मिडिलवेयर के विषय से अलग है, इसलिए हम इस पर विचार नहीं करेंगे। हम इस बात पर विचार करेंगे कि किस प्रकार मिडिलवेयर की सहायता से किसी स्टैटिक फाइल को हैंडल किया जा सकता है।
एप्लीकेशन किसी स्टैटिक फाइल को हैंडल करने के लिए स्टैटिक फाइल मिडिलवेयर का उपयोग करता है। आपको किसी अलग पैकेज का इंस्टॉलेशन एप्लीकेशन के भीतर नहीं करना है। स्टैटिक फाइल हैंडलर बाय डिफ़ॉल्ट आपके एप्लीकेशन के भीतर प्रदान किया गया है, केवल आपको उसे अपने एप्लीकेशन के भीतर प्रयोग करना है।
स्टैटिक फाइल मिडिलवेयर की कार्यप्रणाली
जब क्लाइंट किसी स्टैटिक फाइल के लिए रिक्वेस्ट एप्लीकेशन के पास भेजता है, तो वह रिक्वेस्ट HTTP पाइपलाइन से गुजरते हुए स्टैटिक फाइल हैंडलर के पास जाता है। स्टैटिक फाइल मिडिलवेयर उस रिक्वेस्ट को हैंडल करता है। इसका अर्थ यह है कि स्टैटिक फाइल मिडिलवेयर wwwroot फोल्डर के भीतर से उस फाइल को खोजकर यदि फाइल उपस्थित है तो फाइल को रिस्पॉन्स के रूप में वापस क्लाइंट के पास भेजता है। लेकिन यदि फाइल फोल्डर के भीतर उपलब्ध नहीं है, तो रिस्पॉन्स के रूप में 404 स्टेटस कोड (Not Found) को रिस्पॉन्स के रूप में भेज दिया जाता है। ब्राउज़र के भीतर "फाइल नॉट फाउंड" नामक एरर पेज का प्रदर्शन होता है।
आइए, इस पूरी प्रक्रिया को चरणबद्ध तरीके से समझते हैं:
- सबसे पहले, HTTP रिक्वेस्ट किसी HTML पेज के लिए किया जाता है।
- यह रिक्वेस्ट सर्वर के द्वारा NET Core के पास भेज दिया जाता है।
- जब NET Core इस रिक्वेस्ट को प्राप्त करता है, तो वेब सर्वर एक HttpContext ऑब्जेक्ट का निर्माण करता है और इस ऑब्जेक्ट को मिडिलवेयर के पास भेज देता है।
- स्टैटिक फाइल मिडिलवेयर यह जांच करता है कि संबंधित फाइल wwwroot फोल्डर के भीतर उपलब्ध है या नहीं।
- यदि वह फाइल फोल्डर में उपलब्ध होती है, तो वह उस फाइल को निकालकर रिस्पॉन्स के रूप में ब्राउज़र को भेज देता है।
- यह रिस्पॉन्स वेब सर्वर के पास जाता है, और उसके बाद वेब सर्वर उस रिस्पॉन्स को ब्राउज़र के पास भेज देता है।
आपके मन में यह प्रश्न आ रहा होगा कि यदि फाइल उपस्थित नहीं होती है तो 404 स्टेटस कोड एरर को कौन सा मिडिलवेयर भेजता है? तो यहां यह बात ध्यान रखने वाली है कि एक डमी मिडिलवेयर हमेशा ही एप्लीकेशन में उपलब्ध होता है जो इस प्रकार के रिस्पॉन्स को क्लाइंट के पास भेजने के लिए होता है। यह मिडिलवेयर हमें स्पष्ट रूप से मिडिलवेयर पाइपलाइन के भीतर रखना नहीं होता है।
HTTP रिस्पॉन्स स्टेटस कोड
आइए, आगे बढ़ने से पहले हम स्टेटस कोड के बारे में समझते हैं। HTTP रिस्पॉन्स स्टेटस कोड 5 वर्गों में बांटा गया है। प्रत्येक स्टेटस कोड 3 डिजिट का होता है, जिसका पहला डिजिट स्टेटस कोड के वर्गीकरण का आधार बनता है।
- 1xx (सूचनात्मक): यदि पहला डिजिट एक हो, तो यह सामान्य सूचना को निर्देशित करता है।
- 2xx (सफलता): यदि पहला डिजिट दो हो, तो यह रिक्वेस्ट के सफलतापूर्वक हैंडल किए जाने और प्रोसेस किए जाने के बारे में बताता है। उदाहरण के लिए, स्टेटस कोड 200 (OK) बताता है कि रिक्वेस्ट को सफलतापूर्वक प्रोसेस और हैंडल किया गया है।
- 3xx (रीडायरेक्शन): यदि पहला डिजिट तीन हो, तो यह रीडायरेक्शन के बारे में होता है। इस स्टेटस कोड को देखकर ब्राउज़र रीडायरेक्शन को समझ जाता है।
- 4xx (क्लाइंट एरर): यदि पहला डिजिट चार हो, तो इसका अर्थ यह है कि क्लाइंट के द्वारा भेजे गए रिक्वेस्ट में किसी प्रकार की त्रुटि है। यह क्लाइंट एरर को प्रदर्शित करता है और बताता है कि भेजे गए रिक्वेस्ट में किसी प्रकार की समस्या है। उदाहरण के लिए, क्लाइंट के द्वारा भेजे गए डेटा में किसी प्रकार की त्रुटि हो सकती है या क्लाइंट को उस रिक्वेस्ट को प्रोसेस करने का अधिकार नहीं है।
- 5xx (सर्वर एरर): यदि पहला डिजिट पांच हो, तो यह बताता है कि सर्वर की ओर से किसी प्रकार की समस्या हुई है, जिसके कारण रिक्वेस्ट प्रोसेस नहीं हो सकता है और रिक्वेस्ट फेल हो गया है।
MVC एप्लीकेशन में मिडिलवेयर कॉन्फ़िगरेशन
पिछले लेख में हमने देखा कि किस प्रकार किसी स्टैटिक फाइल को हैंडल करने के लिए स्टैटिक फाइल मिडिलवेयर का उपयोग किया जाता है। इस लेख में हम MVC ASP.NET Core के संदर्भ में देखेंगे कि किस प्रकार MVC का कॉन्फ़िगरेशन मिडिलवेयर पाइपलाइन के भीतर किया जाता है।
MVC मिडिलवेयर का अर्थ यह है कि जब कोई रिक्वेस्ट पाइपलाइन से गुजरेगा, तो वह रिक्वेस्ट प्रोसेस करने के लिए कंट्रोलर के पास भेजा जाएगा। यह भेजने की जिम्मेदारी MVC मिडिलवेयर की होती है। MVC एप्लीकेशन के भीतर MVC मिडिलवेयर एक महत्वपूर्ण कंपोनेंट होता है, जिसका काम यह है कि कंट्रोलर के द्वारा रिस्पॉन्स के रूप में रिटर्न किए गए HTML पेज को मिडिलवेयर के द्वारा क्लाइंट के पास भेज दिया जाता है।
एप्लीकेशन के भीतर MVC को कॉन्फ़िगर करने के लिए दो बातों का ध्यान रखना होता है:
- सबसे पहले हमें एक सर्विस के रूप में MVC को रजिस्टर करना होता है, डिपेंडेंसी इंजेक्शन कंटेनर के भीतर।
- दूसरी बात, रिक्वेस्ट को प्रोसेस करने के लिए MVC मिडिलवेयर का उपयोग करना होता है, जो रिक्वेस्ट को कंट्रोलर के पास भेज देता है। कंट्रोलर के भीतर किसी एक्शन मेथड के द्वारा रिक्वेस्ट को प्रोसेस किया जाता है और रिस्पॉन्स के रूप में एक्शन मेथड HTML पेज या दूसरे प्रकार के कंटेंट को वापस कर सकता है।
MVC एप्लीकेशन के भीतर एक से अधिक मिडिलवेयर का उपयोग किया जाता है। उदाहरण के लिए, एक्सेप्शन को हैंडल करने के लिए एक्सेप्शन हैंडलर मिडिलवेयर का उपयोग किया जाता है। साथ ही, स्टैटिक फाइल हैंडलर का भी उपयोग किया जाता है ताकि HTML पेज के ऊपर लगाए गए जावास्क्रिप्ट और CSS जैसे स्टैटिक फाइल्स को हैंडल किया जा सके। साथ ही, कंट्रोलर के पास रिक्वेस्ट को रूट करने के लिए रूटीन मिडिलवेयर का भी उपयोग करना पड़ता है। यदि कंट्रोलर के ऊपर ऑथराइजेशन की आवश्यकता हो, दूसरे शब्दों में, यदि कंट्रोलर के किसी एक्शन मेथड को एक्सेस करने के लिए ऑथराइजेशन की जरूरत हो, तो इसके लिए मिडिलवेयर के रूप में ऑथेंटिकेशन मिडिलवेयर और ऑथराइजेशन मिडिलवेयर का भी उपयोग मिडिलवेयर पाइपलाइन के भीतर करना पड़ता है।
मिडिलवेयर क्रम का महत्व
जहां तक इन मिडिलवेयर के क्रम की बात हो, तो सबसे पहले पाइपलाइन में एरर हैंडलिंग मिडिलवेयर को रखना पड़ता है। इसके बाद स्टैटिक फाइल मिडिलवेयर को और सबसे अंत में MVC मिडिलवेयर को। आइए, इसके पीछे छिपे हुए लॉजिक को समझते हैं:
- एरर हैंडलिंग मिडिलवेयर: यह सबसे महत्वपूर्ण होता है। जब एप्लीकेशन के पास कोई रिक्वेस्ट आता है, तो किसी भी कारण से कभी भी कोई त्रुटि हो सकती है। हर हालत में, मिडिलवेयर पाइपलाइन के सबसे पहले छोर पर एरर हैंडलिंग मिडिलवेयर को रखना चाहिए। यह सबसे पहला मिडिलवेयर होता है।
- स्टैटिक फाइल मिडिलवेयर: अब इसके बाद हमें स्टैटिक फाइल मिडिलवेयर को रखना चाहिए, क्योंकि MVC एप्लीकेशन के भीतर विभिन्न प्रकार के स्टैटिक फाइल्स जैसे कि जावास्क्रिप्ट और CSS इत्यादि को हैंडल करने के लिए स्टैटिक फाइल मिडिलवेयर की जरूरत पड़ती है। इसका होना अनिवार्य है। यदि ऐसा ना हो, तो wwwroot फोल्डर से स्टैटिक फाइल को एप्लीकेशन कैसे प्राप्त कर सकता है? अतः, अगला मिडिलवेयर हमारा स्टैटिक फाइल मिडिलवेयर होता है।
- MVC मिडिलवेयर: इसके बाद यदि आपकी एप्लीकेशन के भीतर MVC का फीचर जोड़ा गया है, तो इसके लिए आपको MVC मिडिलवेयर की आवश्यकता पड़ती है। ध्यान दीजिए कि MVC मिडिलवेयर आपके पहले के मिडिलवेयर का उपयोग करता है, उदाहरण के लिए स्टैटिक फाइल मिडिलवेयर।
तो हमने समझा कि एक MVC आधारित एप्लीकेशन को बनाने के लिए हमें किन-किन मिडिलवेयर की आवश्यकता पड़ती है और उन्हें किस ऑर्डर में पाइपलाइन के भीतर रखना चाहिए। यदि आप इस क्रम को किसी भी प्रकार से बदल देंगे, तो आपकी एप्लीकेशन के भीतर व्यतिक्रम (unexpected behavior) उत्पन्न हो जाएगा और इसको आप प्रैक्टिकल जांच भी कर सकते हैं.
टिप्पणियाँ
एक टिप्पणी भेजें